Computer Programming Functions as First-Class Citizens এবং Higher-Order Functions গাইড ও নোট

339

F# এ Functions as First-Class Citizens এবং Higher-Order Functions

F# একটি ফাংশনাল প্রোগ্রামিং ভাষা এবং এর অন্যতম শক্তিশালী বৈশিষ্ট্য হলো functions as first-class citizens এবং higher-order functions। এটি F# কে আরও শক্তিশালী এবং কার্যকরী করে তোলে, বিশেষত যখন আপনি ফাংশনাল প্রোগ্রামিং ধারণাগুলি ব্যবহার করে কোড লেখেন।

১. Functions as First-Class Citizens (ফাংশন হিসাবে প্রথম শ্রেণীর নাগরিক)

একটি ভাষার মধ্যে functions as first-class citizens এর মানে হলো যে, ফাংশনগুলোকে কোডের অন্যান্য ডাটা টাইপের মতো প্রথম শ্রেণীর নাগরিক হিসেবে ব্যবহার করা হয়। এর ফলে, আপনি ফাংশনগুলিকে:

  • আর্গুমেন্ট হিসেবে পাস করতে পারেন।
  • অন্য ফাংশন থেকে রিটার্ন করতে পারেন।
  • ভেরিয়েবলের মান হিসেবে অ্যাসাইন করতে পারেন।

F# তে ফাংশনগুলি প্রথম শ্রেণীর নাগরিক, অর্থাৎ আপনি ফাংশনকে আর্গুমেন্ট হিসেবে পাঠাতে পারেন বা একটি ফাংশন থেকে ফেরত দিতে পারেন।

Functions as First-Class Citizens উদাহরণ

// Define a function that takes another function as an argument
let applyFunction f x = f x

// Define a function that adds 5 to a number
let addFive x = x + 5

// Call applyFunction with addFive as the argument
let result = applyFunction addFive 10
printfn "Result: %d" result

উপরের কোডে:

  • applyFunction ফাংশনটি অন্য একটি ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে এবং তাকে একটি ইনপুট পাস করে।
  • addFive একটি ফাংশন যা ৫ যোগ করে দেয়।
  • applyFunction কে addFive ফাংশনটি আর্গুমেন্ট হিসেবে দেয়া হয়েছে এবং ১০ পাস করা হয়েছে। ফলস্বরূপ, আউটপুট হবে 15

এভাবে, F# ফাংশনকে প্রথম শ্রেণীর নাগরিক হিসেবে ব্যবহার করতে সাহায্য করে।

২. Higher-Order Functions (হায়ার-অর্ডার ফাংশন)

Higher-order function এমন একটি ফাংশন যা:

  1. একটি অথবা একাধিক ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে।
  2. অথবা একটি ফাংশনকে রিটার্ন হিসেবে প্রদান করে।

F# এ, আপনি সহজেই হায়ার-অর্ডার ফাংশন তৈরি করতে পারেন। ফাংশনগুলোকে আর্গুমেন্ট হিসেবে গ্রহণ করে, বা অন্য ফাংশন ফেরত দিয়ে আরও অনেক শক্তিশালী এবং পুনঃব্যবহারযোগ্য কোড তৈরি করা সম্ভব।

Higher-Order Functions উদাহরণ

// Higher-order function that takes a function and a list, and applies the function to each element of the list
let mapList f lst = List.map f lst

// Function that doubles a number
let double x = x * 2

// Using the higher-order function to double each element in the list
let numbers = [1; 2; 3; 4]
let doubledNumbers = mapList double numbers

// Printing the result
printfn "Doubled numbers: %A" doubledNumbers

এখানে:

  • mapList একটি হায়ার-অর্ডার ফাংশন যা একটি ফাংশন f এবং একটি লিস্ট lst নেয় এবং List.map এর মাধ্যমে প্রতিটি এলিমেন্টে f ফাংশন প্রয়োগ করে।
  • double একটি সাধারণ ফাংশন যা একটি নম্বর দ্বিগুণ করে।
  • mapList ফাংশনটি double ফাংশনটি এবং একটি লিস্ট নেয় এবং তার প্রতিটি এলিমেন্টে double ফাংশন প্রয়োগ করে।
  • ফলস্বরূপ, doubledNumbers লিস্টে হবে [2; 4; 6; 8]

৩. Higher-Order Functions এর আরো উদাহরণ

ফাংশন রিটার্ন করে

// Function that returns another function
let multiplyBy n = 
    fun x -> x * n

// Create a function that multiplies by 3
let multiplyBy3 = multiplyBy 3

// Calling the returned function
let result = multiplyBy3 5
printfn "Result: %d" result

এখানে:

  • multiplyBy একটি হায়ার-অর্ডার ফাংশন, যা একটি মান n নেয় এবং একটি নতুন ফাংশন ফেরত দেয় যা x এর সাথে n গুণ করে।
  • multiplyBy3 একটি নতুন ফাংশন যা multiplyBy 3 থেকে তৈরি হয়েছে এবং এটি কোনো সংখ্যার সাথে ৩ গুণ করে।

ফাংশন কম্পোজিশন

F# এ আপনি সহজেই ফাংশন কম্পোজিশন করতে পারেন, অর্থাৎ একটি ফাংশন থেকে অন্য ফাংশনে আউটপুট পাস করতে পারেন।

// Function to add 5
let addFive x = x + 5

// Function to multiply by 2
let multiplyByTwo x = x * 2

// Compose the two functions
let addFiveThenMultiply = addFive >> multiplyByTwo

// Apply the composed function
let result = addFiveThenMultiply 3
printfn "Result: %d" result

এখানে:

  • >> অপারেটরটি দুটি ফাংশনকে একত্রিত করে, প্রথম ফাংশনের আউটপুট দ্বিতীয় ফাংশনের ইনপুট হিসেবে পাঠানো হয়।
  • addFiveThenMultiply প্রথমে ৫ যোগ করবে এবং তারপর ২ গুণ করবে।

ফলস্বরূপ, addFiveThenMultiply 3 হবে 16 (প্রথমে ৩ তে ৫ যোগ করা হবে, তারপর ২ গুণ হবে)।

৪. Summary

  • Functions as First-Class Citizens: F# তে ফাংশনগুলোকে প্রথম শ্রেণীর নাগরিক হিসেবে ব্যবহার করা হয়। এর মানে, আপনি ফাংশনকে আর্গুমেন্ট হিসেবে পাস করতে পারেন, একটি ফাংশন থেকে রিটার্ন করতে পারেন, অথবা ফাংশনকে ভেরিয়েবলে অ্যাসাইন করতে পারেন।
  • Higher-Order Functions: হায়ার-অর্ডার ফাংশন এমন ফাংশন যা অন্য ফাংশন গ্রহণ করে অথবা একটি ফাংশন ফেরত দেয়। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং নমনীয়তা বৃদ্ধি করে, এবং জটিল প্রোগ্রামিং সমস্যার সমাধান করতে সহায়তা করে।

এভাবে, F# তে ফাংশনাল প্রোগ্রামিংয়ের শক্তিশালী ধারণাগুলি যেমন First-Class Functions এবং Higher-Order Functions ব্যবহারের মাধ্যমে কোডকে আরও সাধারণ, পরিষ্কার এবং কার্যকরী করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...